#study4从 range函数 到循环结构 再到 嵌套分支+break/continue和嵌套循环

#range函数与range的三种创建方式（注：range函数无法直接进行int运算,需要for……in……：才可以）
a=int(input('输入一个数（start）'))#第一种创建方式
o1=range(a)
print(o1)#返回值[0,a)（迭代器对象），优点是不管集合多大，存储空间一样。如果默认从0开始，相邻元素相差1，这被称之为步长
print(list(o1))#查看集合o中的所有数字；list是列表函数的意思

b=int(input('输入第二个数（end）'))#第二种创建方式
o2=range(a,b)#从a开始到b结束的集合，还是‘[……)’
print(o2,list(o2))

c=int(input('输入第三个数（步长）'))#第三种创建方式
if c==0:
    print('该数字不满足条件')
else:
    o3=range(a,b,c)#c表示步长的长度（相邻元素相差的数的大小）
    print(o3,list(o3))

d=int(input('输入第四个数（判断这个数是否在该集合中）'))
if c==0:
    print(d in o2)#利用range函数与in判断数字是否在该序列
else:print(d in o3)

#循环结构（while结构与for……in结构）
a=1#while结构
while a<10:
    print(a)
    a+=1

for word in 'test':#for循环只能从可迭代对象（字符串、序列（range（）……）……）中依次取出所有值（历遍）
    print(word)#字符串的示例

for num in o2:#序列的示例
    print(num)

for _ in o1:#’_‘表示没有变量
    print('test')#输出o1次test

#流程控制语句（循环）：break 与 continue
#break：结束当前循环，常与if一起用（具体使用详见“错误，重新输入！）
for x in range(d+1):
    if x==d-1:
        break
    print('输出test的次数比d少一次')
#while循环对于break也是一样的

#continue：结束当前循环直接进行下一次循环，常与if一起使用
x1=1
while x1<=50:#输出5的倍数（麻烦了点）
    if x1%5!=0:
        x1+=1
        continue
    else:print(x1)
    x1+=1

#else语句
#if的else语句就不用举例子了吧……
#for的else语句（while也差不多）：
for test in range(3):
    print('test')
else:print('test,test')#3次for循环已经结束，所以执行else（前面的循环不可出现break，否则不执行else）

#嵌套循环
for p in range(3):#打印一个三行四列的矩阵
    for q in range(4):
        print('*',end='\t')#不换行输出
    print()#啥也输出，就是为了换个行

for m in range(1,10):#来个高难度的乘法表
    for n in range(1,m+1):
        print(m,'×',n,'=',m*n,end='\t')
    print()

#二重循环的内循环遇到break代表执行外循环，continue代表重新执行内循环
